// #include <iostream>
// #include <sys/time.h>
// #include <sys/resource.h>
// #include <unistd.h>
// #include <signal.h>
// void handler(int signo)
// {
//     std::cout << "signo : " << signo << std::endl;
//     exit(1);
// }
// int main()
// {
//     // 资源不足，导致OS终止进程，是通过信号终止的
//     for (int i = 1; i <= 31; i++)
//     {
//         signal(i, handler);
//     }
//     // 限制累计运行时长
//     // struct rlimit r;
//     // r.rlim_cur = 1;
//     // r.rlim_max = RLIM_INFINITY;
//     // setrlimit(RLIMIT_CPU, &r);
//     // while(1);

//     struct rlimit r;
//     r.rlim_cur = 1024 * 1024 * 40; // 当前---20M
//     r.rlim_max = RLIM_INFINITY;    // 最大---没上限
//     setrlimit(RLIMIT_AS, &r);
//     int count = 0;
//     while (true)
//     {
//         int *p = new int[1024 * 1024];
//         count++;
//         std::cout << "size: " << count << std::endl;
//         sleep(1);
//     }

//     return 0;
// }

// #include <iostream>
// #include <vector>
// #include <boost/algorithm/string.hpp>

// int main()
// {
//     std::vector<std::string> tokens;
//     const std::string sep = ":";
//     std::string str = "1::::判断回文数:简单:1:30000";

//     //切割好的字符串存在在哪
//     //切割那个字符串
//     //按照什么切割
//     //是否保留切割符   token_compress_on       token_compress_off              
//     boost::split(tokens, str, boost::is_any_of(sep), boost::algorithm::token_compress_off);

//     for (auto &iter : tokens)
//     {
//         std::cout << iter << std::endl;
//     }
//     return 0;
// }



#include<iostream>
#include <string>
#include<ctemplate/template.h>

int main()
{
    std::string in_html = "./test.html";
    std::string  value = "我叫林仔你别笑";

    //形成数据字典
    ctemplate::TemplateDictionary root("test"); //unordered_map<> test;
    root.SetValue("key",value);                 //test.insert({});

    //获取被渲染网页对象
    ctemplate::Template*tpl=ctemplate::Template::GetTemplate(in_html,ctemplate::DO_NOT_STRIP);

    //添加字典数据到网页中
    std::string out_html;
    tpl->Expand(&out_html,&root);

    //完成渲染
    std::cout<<out_html<<std::endl;

} 
